# -*- coding: utf-8 -*-
from urllib import quote

# alipays://platformapi/startapp?appId=09999988&actionType=toCard&sourceId=bill
# &cardNo=6217000030001234567&bankAccount=%E9%A9%AC%E4%BA%91&money=0.01&amount=0.01&bankMark=CCB&bankName=%E4%B8%AD%E5%9B%BD%E5%BB%BA%E8%AE%BE%E9%93%B6%E8%A1%8C

# appId=09999988   // 应用ID -默认
# actionType=toCard  // 转账类型 toCard-到银行卡
# sourceId=bill  // 未知
# cardNo=6217000030001234567  // 银行卡号
# bankAccount=%E9%A9%AC%E4%BA%91  // 银行账户
# money=0.01  // 转账金额
# amount=0.01  // 转账额度
# bankMark=CCB  // 银行代号 -可选
# bankName=%E4%B8%AD%E5%9B%BD%E5%BB%BA%E8%AE%BE%E9%93%B6%E8%A1%8C  // 银行名称

BANK_DCT = {
    u'工商银行': 'ICBC',
    u'中国工商银行': 'ICBC',
    u'建设银行': 'CCB',
    u'中国建设银行': 'CCB',
    u'中国银行': 'BOC',
    u'农业银行': 'ABC',
    u'中国农业银行': 'ABC',
    u'交通银行': 'BCM',
    u'中国交通银行': 'BCM',
    u'招商银行': 'CMB',
    u'中国招商银行': 'CMB',
    u'中信银行': 'CNCB',
    u'中国中信银行': 'CNCB',
    u'光大银行': 'CEB',
    u'中国光大银行': 'CEB',
    # u'华夏银行': 'HXB',
    u'华夏银行': 'HB',
    u'中国华夏银行': 'HXB',
    u'浦发银行': 'SPDB',
    u'上海浦东发展银行': 'SPDB',
    u'中国浦发银行': 'SPDB',
    u'兴业银行': 'CIB',
    u'中国兴业银行': 'CIB',
    u'民生银行': 'CMBC',
    u'中国民生银行': 'CMBC',
    u'平安银行': 'PAB',
    u'中国平安银行': 'PAB',
    u'广发银行': 'CGB',
    u'中国广发银行': 'CGB',
    u'邮政银行': 'PSBC',
    u'邮储银行': 'PSBC',
    u'中邮政银行': 'PSBC',
    u'中国邮政储蓄银行': 'PSBC',
    u'哈尔滨银行': 'HRBB',
    u'南京银行': 'NJCB',
    u'其它银行': 'THIRD_NOT_SUPPORT'
}


class AlipayTransBankcard:
    def __init__(self):
        self.appId = '09999988'
        self.actionType = 'toCard'
        self.sourceId = 'bill'

    def gen_trans_url(self, cardNo, bankAccount, bankName, money=None):
        if money:
            return u'alipays://platformapi/startapp?appId=09999988&actionType=toCard&sourceId=bill' \
                   u'&cardNo={}&bankAccount={}&money={}&amount={}&bankMark={}&bankName={}'.format(cardNo, bankAccount,
                                                                                                  money, money,
                                                                                                  BANK_DCT[bankName],
                                                                                                  bankName)
        else:
            return u'alipays://platformapi/startapp?appId=09999988&actionType=toCard&sourceId=bill' \
                   u'&cardNo={}&bankAccount={}&bankMark={}&bankName={}'.format(cardNo, bankAccount,
                                                                               BANK_DCT[bankName],
                                                                               bankName)


client = AlipayTransBankcard()


def get_alipay_trans_bankcard_url(cardNo, bankAccount, bankName, money=None):
    return client.gen_trans_url(cardNo, bankAccount, bankName, money)


# 6230200180051083
# 温州分行黎明支行
# 华夏银行
# 黄多梅
# 13057905982

# 6217003150005255629
# 广东韶关北郊支行
# 建设银行
# 郑月
if __name__ == '__main__':
    # s = client.gen_trans_url('6230200180051083', u'黄多梅', 1, u'华夏银行')
    s = client.gen_trans_url('6217003150005255629', u'郑月', u'建设银行', 1)
    print s

